package com.coszero.utils.system

import android.content.ClipData
import android.content.ClipboardManager
import android.content.Context
import com.coszero.utils.utils.LogX

/**
 * Desc： 剪贴板工具类
 *
 *
 *
 * @author ： xmqian
 * Email:xmqian93@163.com
 * Date: 2020/6/2 17:05
 * @version 1
 */
object ClipboardUtils {
    /**
     * 复制数据到剪贴板
     *
     * @param contents 内容
     */
    fun copyToClipboard(context: Context, contents: String?) {
        val c: ClipboardManager = context.getSystemService(
            Context.CLIPBOARD_SERVICE
        ) as ClipboardManager
        val clipData: ClipData = ClipData.newPlainText("text", contents)
        // 设置Clipboard 的内容
        c.setPrimaryClip(clipData)
    }

    /**
     * 获取剪贴板的文本,使用时需要注意，要在onResum()的生命周期中获取
     * 需要使用下面的代码进行获取,针对Andnrid 10的特殊操作
     * this.getWindow().getDecorView().post(new Runable{});
     *
     * @return 剪贴板的文本
     */
    fun getText(context: Context): CharSequence {
        val cm: ClipboardManager =
            context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
        val clip: ClipData? = cm.getPrimaryClip()
        if (clip != null && clip.getItemCount() > 0) {
            return clip.getItemAt(0).coerceToText(context)
        }
        LogX.d("### ClipboardUtils 剪贴版没有内容")
        return ""
    }

    /**
     * 清空剪切板
     */
    fun clear(context: Context) {
        val manager: ClipboardManager? =
            context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager?
        if (manager != null) {
            try {
                manager.setPrimaryClip(manager.getPrimaryClip()!!)
                manager.setPrimaryClip(ClipData.newPlainText("", ""))
            } catch (e: Exception) {
                e.printStackTrace()
            }
        }
    }
}
